package cn.fenqing168.nio;

import java.io.File;
import java.io.FileOutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.charset.StandardCharsets;

/**
 * 往文件写入一句话
 * @author fenqing
 */
public class NioFileChannel1 {

    public static void main(String[] args) {

        //1.声明一个字符串，指定一句话
        String text = "初识文件通道";
        //2.创建一个文件输出流
        File file = new File("./nio/fileChannel1.txt");
        if(!file.getParentFile().exists()){
            file.getParentFile().mkdirs();
        }
        try(FileOutputStream os = new FileOutputStream(file)){
            //3.通过文件输出流获取到一个文件通道
            FileChannel channel = os.getChannel();
            //4.创建一个字节缓冲区
            ByteBuffer buffer = ByteBuffer.allocate(1024);
            //5.循环对文件缓冲区写入数据，并且反转后写入到文件通道，随之清空缓冲区，准备下一次循环
            byte[] bytes = text.getBytes(StandardCharsets.UTF_8);
            buffer.put(bytes);
            buffer.flip();
            channel.write(buffer);
        }catch (Exception e){
            e.printStackTrace();
        }

    }

}
